The present invention relates generally to management of memory resources, and more specifically, to improving software performance by identifying and pre-loading data pages into main memory.
Currently, some instructions in various computer architectures can be restarted after they are interrupted. When an interrupt takes place, the operating system examines the instruction and its data to see if it can take an action to successfully restart the instruction. For example, an instruction can be interrupted when the instruction attempts to reference data that is not currently in main memory. The operating system can then bring the required data into main memory so that the instruction can be restarted. If the instruction references many pieces of data that are not in main memory, it will go through a loop of being interrupted, being examined, having data structures created for I/O, initiating I/O, waiting for I/O to complete, being restarted, and processing the data. This loop will have to be performed as many times as the requested data is not available in main memory.
A pre-loading operation is an operation that loads into main memory a data page that has not yet been explicitly requested. Currently, many operating systems implement pre-loading operations, which load data pages that are either in consecutive locations or in predictable locations of storage to data pages that have been requested. In general, if an application running on a computer system references many pages of storage from outside of main memory, the performance of the application can be increased by pre-loading the pages into main memory before the data pages are to be operated on. Methods for pre-loading pages into the main memory are well known in the art.
Some currently available methods of determining what data pages to pre-load into main memory require intricate knowledge of data reference patterns or specific input from the user or the application program. If the input provided by the user or application is incorrect, the performance of the application will be degraded. Another available method of determining what data pages to pre-load into main memory includes a guess by the operating system that past data page reference patterns will continue in the future. If this assumption is not true, performance of the application can be degraded.